iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0

主成分分析 (Principle Component Analysis, PCA) 是一種統計技術,用於將高維資料投射到低維空間,同時保留資料的主要變異性。PCA 通常用於資料降維、特徵選取、資料壓縮以及資料可視化。PCA 的核心思想是通過線性變換將原始特徵空間中的資料轉換為一組新的不相關特徵,這些特徵稱為「主成分」,這些主成分按解釋資料變異性的大小排序。

  1. 資料標準化:由於不同特徵的量綱可能不同,在進行 PCA 之前,通常需要對資料進行標準化處理,將所有特徵的均值變為 0,方差變為 1。

  2. 計算協方差矩陣:在資料標準化後,計算資料集的協方差矩陣,協方差矩陣是一個正方形矩陣,用來描述每對變量之間的關係。

  3. 計算特徵值和特徵向量:對協方差矩陣進行特徵值分解,得到特徵值和特徵向量。特徵值表示主成分的重要性,而特徵向量則表示主成分的方向。

  4. 選取主成分:根據特徵值的大小選取最重要的前 k 個特徵向量,這些特徵向量組成的空間就是新的低維空間。

  5. 轉換資料:將原始資料投射到選取的 k 個主成分上,得到降維後的新資料集。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

iris = load_iris()
X = iris.data
y = iris.target

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

plt.figure(figsize=(8, 6))
colors = ['r', 'g', 'b']
for i in range(len(colors)):
    plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], color=colors[i], alpha=0.5, label=iris.target_names[i])

plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('PCA of Iris Dataset')
plt.legend()
plt.show()

在這個範例中,我們使用 PCA 將 iris 資料集從 4 維降到 2 維。視覺化結果顯示了在這兩個主成分空間下,三種不同品種的 iris 花的資料點分布。雖然它們之間有一些重疊,但整體上這兩個主成分能夠捕捉到大部分的變異性,並清楚地區分這些花的類別。

PCA 的優勢在於它能夠有效地減少資料的維度,同時保留最重要的資訊,這在資料可視化和後續的機器學習任務中非常有用。然而,由於它是一種線性技術,對於非線性分離的資料效果可能有限。


上一篇
DAY20 CLIQUE 模型 20/30
下一篇
DAY22 獨立成分分析ICA 22/30
系列文
機器學習與深度學習背後框架與過程論文與實作28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言